<?php
/*
 * * * * * * * * * * LICENCIA * * * * * * * * * * * * * * * * * * * * *

Copyright(C) 2012
Instituto Universtiario de Tecnología Dr. Federico Rivero Palacio

Este programa es Software Libre y usted puede redistribuirlo y/o modificarlo
bajo los términos de la versión 3.0 de la Licencia Pública General (GPLv3)
publicada por la Free Software Foundation (FSF), es distribuido sin ninguna
garantía. Usted debe haber recibido una copia de la GPLv3 junto con este
programa, sino, puede encontrarlo en la página web de la FSF, 
específicamente en la dirección http://www.gnu.org/licenses/gpl-3.0.html

 * * * * * * * * * * ARCHIVO * * * * * * * * * * * * * * * * * * * * *

Nombre: DocenteControlador.clase.php
Diseñador: Daniel Abreu (dabreuperes@gmail.com)
Programador: Daniel Abreu
Fecha: Noviembre de 2012
Descripción:
	Este es el controlador del módulo Docente, permite manejar las 
	operaciones relacionadas con los Docentes (agregar, modificar,
	eliminar, consultar, buscar), es el intermediario entre la base de
	datos y la vista. 
	
	El constructor se encarga de ejecutar la comunicacion con el modulo 
	de fotografia automaticamente

 * * * * * * * * Cambios/Mejoras/Correcciones/Revisiones * * * * * * * *
Diseñador - Programador /   Fecha   / Descripción del cambio
---                         ----      ---------

 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*/


//Objeto Docente
require_once "Negocio/Docente.clase.php";

//Clase que permite la comunicación con la base de datos
require_once "Modulos/Docente/Modelo/DocenteServicio.clase.php";
  
  //  ****** controlador del módulo Fotografia  ******
require_once "Modulos/Fotografia/Controlador/FotografiaControlador.clase.php";

//Clase que permite la comunicación con la base de datos del modulo Curso
require_once "Modulos/Curso/Modelo/CursoServicio.clase.php";

//Clase que permite la comunicación con la base de datos del modulo Instituto
require_once "Modulos/Instituto/Modelo/InstitutoServicio.clase.php";

//Clase que permite la comunicación con la base de datos del modulo Pensum
require_once "Modulos/Pensum/Modelo/PensumServicio.clase.php";

//Clase que permite la comunicación con la base de datos del modulo Login
require_once "Modulos/Login/Modelo/LoginServicio.clase.php";

//Clase que permite mostrar la vista cuando se esté trabajando desde
//un computador
require_once "Base/Vista/VistaComputador.clase.php";
 // ****** controlador del módulo Login  ******
require_once 'Modulos/Login/Controlador/LoginControlador.clase.php';
class DocenteControlador {
	//atributos
	private $subControlador;
	
	
	
	 public function __construct(){
		//Reconocer objeto global gbVista
		global $gbVista;
		//Asignar el JavaScript de la vista
		$gbVista->asignarCSS("Modulos/Docente/Vista/Css/MostrarModificar.css");	
		$gbVista->asignarCSS("Modulos/Docente/Vista/Css/mostrarFoto.css");
		$gbVista->asignarJavaScript("Base/Vista/Computador/JavaScript/Paginacion.js");
		$gbVista->asignarJavaScript("Modulos/Docente/Vista/JavaScript/Docente.js");
		
		
		 //se obtiene el sub modulo a trabajar del arreglo POST y/o GET
		$subModulo = PostGet::obtenerPostGet('submodulo');	
		//permite colocar un submodulo predefinido en caso de no colocarlo
		if(! $subModulo){
			$subModulo= 'fotografia';
			}
		//Se asigna el SubModulo Fotografia	
		if ($subModulo=='fotografia'){	
			$this->asignarSubControlador($subModulo, new FotografiaControlador());
			}
		 }
	
	/*Método que permite manejar el requerimiento (o acción) indicado por
	 * el usuario según su petición
	 * resumen de acciones:
	 *  listar: muestra una lista de Docentes
		mostrar: muestra toda la información de un solo Docente
		preagregar: muestra el formulario para agregar un docente
		agregar: recibe los datos de un Docente llenados en el formulario
		         llamado por 'preagregar' e intenta agregar el Docente
		         en la base de datos
		premodificar: carga en un formulario los datos de un Docente a
		         ser modificado
		modificar: envía al servidor los datos ya modificados de un 
		         docnete o en intenga hacer el cambio en la base de datos
		eliminar: intenta eliminar un Docente de la base de datos
		
		Cada acción será redireccionada a un método que la procesa para 
		mayor orden 
		
	 */
	public function manejarRequerimiento(){
		
		//permite obtener la acción a realizar en este módulo
		$accion = (PostGet::obtenerPostGet('accion'))
		              ?   PostGet::obtenerPostGet('accion')   :   FALSE  ;

		//permite colocar una acción predefinida en caso de no colocarla
		if ( ! $accion)
			$accion = 'listar';
		
		if ($accion == 'mostrar'){
			$this->mostrarDocente();
		}elseif ($accion == 'listar') {
			$this->listarDocentes();
		}elseif (($accion == 'modificar' && PostGet::obtenerPostGet('codigo') == $_SESSION['codDocente'] ) != false || ($_SESSION['tipo']== 'A' && $accion == 'modificar')== true || ($_SESSION['tipo']== 'B' && $accion == 'modificar')== true  || ($_SESSION['tipo']== 'D' && $accion == 'modificar') == true){
			$this->modificarDocente();
		}elseif (($accion == 'premodificar' && PostGet::obtenerPostGet('codigo') == $_SESSION['codDocente'] ) != false || ($_SESSION['tipo']== 'A'  && $accion == 'premodificar')== true  || ($_SESSION['tipo']== 'B' && $accion == 'premodificar')== true  || ($_SESSION['tipo']== 'D' && $accion == 'premodificar')== true ){
			$this->premodificarDocente();
		}elseif ($accion == 'eliminar' && ($_SESSION['tipo']== 'A' or $_SESSION['tipo']== 'D') ){ 
			$this->eliminarDocente();
		}elseif ($accion == 'preagregar' && ($_SESSION['tipo']== 'A' or $_SESSION['tipo']== 'D')) 
			$this->preagregarDocente();
		elseif ($accion == 'agregar' && ($_SESSION['tipo']== 'A' or $_SESSION['tipo']== 'D')) 
			$this->agregarDocente();
		else
			echo "No tiene Permiso para ejecutar la acci&oacute;n: $accion";	
	} 
	/*Método que permite extraer de la base de datos toda la información de 
	  un docente. recibe los datos desde la vista (arreglo PostGet),
	  específicamente el codigo de el docente, lo busca en la base de datos,
	  luego construye el objeto tipo Docente y lo manda a la vista correspondiente
	*/
	public function mostrarDocente(){

		//reconocer objeto global gbVista
		global $gbVista;
		
		//se obtiene el codigo del docente a buscar en el arreglo POST y/o GET
		$codigo = PostGet::obtenerPostGet('codigo');
		
		//se obtiene el sub modulo a trabajar del arreglo POST y/o GET    
		$subModulo = PostGet::obtenerPostGet('submodulo');
		
		/*Buscar en base de datos a el docente por su Codigo esto 
		* retornara un arreglo de objetos de una sola posicion ([0]).
		* En caso de Error retornara un valor boleano (False).  
		*/
		$docente = DocenteServicio::obtenerDocentePorCodigo($codigo);
		
		/*Buscar en la Base de datos todos los cursos en los que el 
		 * docente imparte clases.
		 * esto retornara un arrego de cursos o ceso (0) si no tiene 
		 * cursos asignados */
		$curso=CursoServicio::obtenerCursoPorDocente($codigo);
		
		//se obtiene un arreglo de objetos de todos los Privilegios	
		$privilegio = LoginServicio::listarPrivilegio();
		
		
		if($curso==0){
		$gbVista->asignarInformacion('cargaAcademica', '0');
		$gbVista->asignarInformacion('mensajeCarga', null);
		$gbVista->asignarInformacion('UnidadesCurriculares',array(array('No tiene asignada ninguna')));
			}else{
		$unidadCurrricular= DocenteServicio::obtenerUnidadesCurriculares($curso);
		$carga = CursoServicio::obtenerCargaAcademica($curso);
		$gbVista->asignarInformacion('UnidadesCurriculares', $unidadCurrricular);
		$gbVista->asignarInformacion('cargaAcademica', $carga);
		$gbVista->asignarInformacion('mensajeCarga', null);
		}

		//Mostrar en la vista
		if ($docente){
			$fotografia= $this->obtenerSubControlador($subModulo)->manejarRequerimiento();
			$gbVista->asignarInformacion('docente', $docente);
			$gbVista->asignarInformacion('mensaje', null);
			$gbVista->asignarInformacion('exito', true);
			$gbVista->asignarInformacion('listaPrivilegio',$privilegio);
			
		}else{
			$gbVista->asignarInformacion('docente', null);
			$gbVista->asignarInformacion('mensaje', "Error al buscar el docente");
			$gbVista->asignarInformacion('exito', false);
		}
		
		//configurar la vista
		$gbVista->asignarCSS("Modulos/Docente/Vista/Css/mostrarFoto.css");
		$gbVista->asignarDireccionVista("Modulos/Docente/Vista/DocenteMostrar.php");
		$gbVista->mostrar();
	
	}
	
	/*Método que permite obtener una lista de Docentes según un patrón de
	  búsqueda.
	 */
	 
	public function listarDocentes(){
		//reconocer objeto global gbVista
		global $gbVista;
		
		//obtener el patrón de búsqueda
		$patron = PostGet::obtenerPostGet('patron');
		
		//3. si el patron esta vacio de le asigna ''	
		$patron = ($patron) ? $patron : '';
		
		//obtener la lista de Docentes según el patrón 
		$docentes = DocenteServicio::obtenerListaDocentes($patron);
	
		//configura y muestra la vista con los resultados.
		$gbVista->asignarInformacion('docentes',$docentes);

		$gbVista->asignarDireccionVista("Modulos/Docente/Vista/DocenteListar.php");
		$gbVista->mostrar();
	}
	
	
	/* Permite cargar en pantalla la información de un Docente para modificarlo,
	   recibe el código (codigo), el busca en la base de datos y luego
	   lo carga y muestra en la vista correspondiente
	*/
	public function premodificarDocente(){
		//reconocer objeto global gbVista
		global $gbVista;
		
		//obtiene el código 	
		$codigo = PostGet::obtenerPostGet('codigo');

		//buscar el Docente en la base de datos, retorna false en caso
		//de error, de lo contrario retorna un arreglo con los Docentes
		//en este caso un arreglo con sólo una posición
		$docentes = DocenteServicio::obtenerDocentePorCodigo($codigo);
		//se obtiene el sub modulo a trabajar del arreglo POST y/o GET  
		$subModulo = PostGet::obtenerPostGet('submodulo');
		$listaDocentes = DocenteServicio::obtenerListaDocentes('');
		//se obtiene un arreglo de objetos de todos los institutos
		$institutos = InstitutoServicio::obtenerListaInstitutos("");	
			
		//se obtiene un arreglo de objetos de todos los pemsums	
		$pensums = PensumServicio::obtenerListaPensum("");
		
		//se obtiene un arreglo de objetos de todos los Privilegios	
		$privilegio = LoginServicio::listarPrivilegio();
		
		//Si hubo error en la búsqueda llama a una página genérica para mostrar
		//errores
		if ($docentes === false) { //hubo error en la búsqueda
			$gbVista->asignarInformacion('titulo', 'Error');
			$gbVista->asignarInformacion('mensaje','Docente no encontrado, no se puede hacer la modificación');
			$gbVista->asignarDireccionVista("Modulos/Docente/Vista/DocenteMensaje.php");

		// en caso de éxito carga la información en la vista correspondiente
		}else{ 
			$fotografia= $this->obtenerSubControlador('fotografia')->manejarRequerimiento();
			$gbVista->asignarInformacion('docente', $docentes);
			$gbVista->asignarInformacion('listaIntitutos', $institutos);
			$gbVista->asignarInformacion('listaDocentes', $listaDocentes);
			$gbVista->asignarInformacion('listaPensums', $pensums);
			$gbVista->asignarInformacion('accion',PostGet::obtenerPostGet('accion'));
			$gbVista->asignarInformacion('listaPrivilegio',$privilegio);

			/* Se asigna la dirección del archivo css para la vista especificada */
			$gbVista->asignarCSS("Modulos/Docente/Vista/Css/mostrarModificar.css");
			$gbVista->asignarDireccionVista("Modulos/Docente/Vista/DocenteAgregarModificar.php");
		}
		$gbVista->mostrar();
		}
	/*Permite modificar un docente, recibe los parámetros 
	  por parte del usuario (desde la vista a través del arreglo PostGet)
	  y hace los cambios en la base de datos según la clave primaria de 
	  los docentes
	*/
	public function modificarDocente() {
		//reconocer objeto global gbVista
		global $gbVista;
		//construir el objeto Docente proveniente desde la vista
		$docente = $this->cargardeFormulario();
		if(PostGet::obtenerPostGet('cambioroll')==true and PostGet::obtenerPostGet('cambioroll') != $docente->obtenerCodigo()){
			$R = DocenteServicio::cambioDeRol(PostGet::obtenerPostGet('cambioroll'),$docente->obtenerCodigo());
			if($R === true)
			$docente->asignarPrivilegio('B');
			}
		$docentes = DocenteServicio::obtenerDocentePorCodigo(PostGet::obtenerPostGet('codigoP'));
		
		/*llama al método encargado de realizar la modificación, retorna
		   true en caso de éxito, de lo contrario retorna false 
		*/
		$respuesta = DocenteServicio::modificarDocente($docente);

		//se obtiene el sub modulo a trabajar del arreglo POST y/o GET 
		$subModulo = PostGet::obtenerPostGet('submodulo'); 
		//procesar respuesta
		$gbVista->asignarInformacion('accion',PostGet::obtenerPostGet('accion'));

		if((md5(PostGet::obtenerPostGet('contra')) == $docentes[0]->obtenerContraseña())=== true and ( PostGet::obtenerPostGet('contra1') == PostGet::obtenerPostGet('contra2') )=== true and (PostGet::obtenerPostGet('contra2') != '') )	{
			
			$docente->asignarContraseña(	PostGet::obtenerPostGet('contra1')	);
			$contra = DocenteServicio::modificarContraseñaDocente($docente);
		if ($contra === true){
				$gbVista->asignarInformacion('exitoc',true);
				$gbVista->asignarInformacion('mensajec','Se cambio la Contraseña');
			}else{
				$gbVista->asignarInformacion('exitoc',true);
				$gbVista->asignarInformacion('mensajec','No se cambio la Contraseña');
				}
		}
		if ($respuesta === true) { //caso de exito
			
			$fotografia= $this->obtenerSubControlador($subModulo)->manejarRequerimiento();
			$gbVista->asignarInformacion('docente',$docente);
			$gbVista->asignarInformacion('mensaje','Docente modificado con éxito');
			$gbVista->asignarInformacion('titulo', 'Modificar Docente');
			$gbVista->asignarInformacion('exito',true);
		}elseif($respuesta === 1){
			$gbVista->asignarInformacion('docente', array($docente) );
			$gbVista->asignarInformacion('mensaje','No se pudo modificar el Docente la cedula ya exite');
			$gbVista->asignarInformacion('titulo', 'Error');
			$gbVista->asignarInformacion('exito',false);  
		}elseif($respuesta === false){
			$gbVista->asignarInformacion('docente', array($docente) );
			$gbVista->asignarInformacion('mensaje','No se pudo modificar el Docente');
			$gbVista->asignarInformacion('titulo', 'Error');
			$gbVista->asignarInformacion('exito',false);  
		}elseif($respuesta === 2){
			$gbVista->asignarInformacion('docente', array($docente) );
			$gbVista->asignarInformacion('mensaje','No se puede cambiar el privilegio por que el sistema no se puede quedar sin Administradores');
			$gbVista->asignarInformacion('titulo', 'Error');
			$gbVista->asignarInformacion('exito',false);  
			}
		if (isset($R) and $docente->obtenerCodigo() == $_SESSION['codDocente']){
			$l= new LoginControlador();
			$l->cerrarLogin();
		}else{
			//asigna la vista encargada de mostrar la data
			$gbVista->asignarJavaScript("Modulos/Docente/Vista/JavaScript/Docente.js");
			$gbVista->asignarDireccionVista("Modulos/Docente/Vista/DocenteMensaje.php");
			$gbVista->mostrar();
		}
	}		

	
	/*Permite eliminar un Docente, recibe el código, ejecuta la acción 
	  correspondiente y muestra un mensaje con el resultado de la operación,
	  utiliza la pantalla genérica de mensajes para dar la respuesta
	*/
	public function eliminarDocente() {
		// reconocer objeto global gbVista
		global $gbVista;
		
		//Obtener la cedula del Docente a eliminar
		$codigo = PostGet::obtenerPostGet('codigo');
		
		
		$subModulo = PostGet::obtenerPostGet('submodulo');
		$fotografia= $this->obtenerSubControlador($subModulo)->manejarRequerimiento();

		//llamado al servicio para eliminar el Docente, retorna false
		//si ocurre algún error, o true en caso de éxito
		$respuesta = DocenteServicio::eliminarDocente($codigo);
		
		
		//procesar respuesta
		$gbVista->asignarInformacion('titulo','Eliminar Docente');
		
		if ($respuesta === true){  //caso de exito
			$gbVista->asignarInformacion('mensaje','Docente eliminado con éxito');
			$gbVista->asignarInformacion('exito',true);
		}elseif($respuesta === false){
			$gbVista->asignarInformacion('mensaje','No puede ser eliminado por que esta asignado a un curso');
			$gbVista->asignarInformacion('exito',false);
		}elseif($respuesta === 1){
			$gbVista->asignarInformacion('mensaje','No puede ser eliminado por que es el unico Administrador');
			$gbVista->asignarInformacion('exito',false);
			
			}
		//5. asignar la vista para mostrar mensajes, y mostrarla

		$gbVista->asignarDireccionVista("Modulos/Docente/Vista/DocenteMensaje.php");
		$gbVista->mostrar();
		
	}
	
	
	
	/* Médodo que permite mostar el formulario para agregar un Docente */
	public function preagregarDocente() {
		//reconocer objeto global gbVista
		global $gbVista;
		//se obtiene un arreglo de objetos de todos los institutos	
		$institutos = InstitutoServicio::obtenerListaInstitutos("");	
	
		//se obtiene un arreglo de objetos de todos los pemsuns
		$pensums = PensumServicio::obtenerListaPensum("");
		
		$privilegio = LoginServicio::listarPrivilegio();
		
		/*le asigna la información necesaria para manejar en la vista, en
		  este caso la accion (preagregar) y un arreglo con un objeto
		 docente vacío
		*/
	
		$gbVista->asignarInformacion('accion',PostGet::obtenerPostGet('accion'));
		$gbVista->asignarInformacion('docente',array( new Docente()));
		$gbVista->asignarInformacion('listaIntitutos', $institutos);
		$gbVista->asignarInformacion('listaPensums', $pensums);	
		$gbVista->asignarInformacion('listaPrivilegio',$privilegio);
		/*Se asigna la dirección del archivo que mostrará la información
		  de la vista */
		$gbVista->asignarDireccionVista("Modulos/Docente/Vista/DocenteAgregarModificar.php");
		/*Se asigna la dirección del archivo css para la vista especificada */
		$gbVista->asignarCSS("Modulos/Docente/Vista/Css/MostrarModificar.css");
		//Muestra la vista por pantalla
		$gbVista->mostrar();
		
	}
	
	/* Método que permite agregar un Docente, recibe los parámetros desde 
	   la vista (arreglo PostGet) y llama a Docente Servicio que permite
	   comunicarse con la base de datos,y este último retorna el resultado
	   ya sea éxito o fracaso, y con este resultado se le envía la respuesta
	   al usuario
	*/
	public function agregarDocente() {
		//reconocer objeto global gbVista
		global $gbVista;
		
		//construir el objeto docenente proviniente de la vista
		$docente =  $this->cargardeFormulario();

		/*llamado al servicio para agregar docente, se le pasa como parámetro
		el objeto docente a insertar. retorna true en caso de éxito y false
		si ocurre algún error
		*/
		$respuesta = DocenteServicio::agregarDocente($docente);
		//ejecucion de el submodulo
		$subModulo = PostGet::obtenerPostGet('submodulo');

		//obtiene la accion a realizar y la asigna a la vista
		$gbVista->asignarInformacion('accion',PostGet::obtenerPostGet('accion'));
		if ($respuesta === true) { //caso de éxito en la agregación
			
			$gbVista->asignarInformacion('titulo', 'Agregar Docente');
			//asigna como información un Docente vacío para mostrar de nuevo 
			//el formulario en blanco
			$this->obtenerSubControlador($subModulo)->manejarRequerimiento();
			$gbVista->asignarInformacion('docente',array(new Docente()));
			//asigna el mensaje a mostrar
			$gbVista->asignarInformacion('mensaje','Docente ' . $docente->obtenerNombre1() . ' agregado con éxito');
			$gbVista->asignarInformacion('exito',true);
		}elseif($respuesta == 1){
			$gbVista->asignarInformacion('exito',false);
			//asigna el mismo Docente como información para que apermanezca
			//la información en pantalla
			$gbVista->asignarInformacion('docente', array($docente) );
			//asigna el mensaje a mostrar según el error
			$gbVista->asignarInformacion('mensaje','No se pudo agregar el docente la cedula ya existe');
			$gbVista->asignarInformacion('titulo','Error');
		}elseif($respuesta == false){  //en caso de error
			$gbVista->asignarInformacion('exito',false);
			//asigna el mismo Docente como información para que apermanezca
			//la información en pantalla
			$gbVista->asignarInformacion('docente', array($docente) );
			//asigna el mensaje a mostrar según el error
			$gbVista->asignarInformacion('mensaje','No se pudo agregar el docente');
			$gbVista->asignarInformacion('titulo','Error');
		}

		//asigna la vista que muestra la información
		$gbVista->asignarCSS("Modulos/Docente/Vista/Css/mostrarMostarModificar.css");
		$gbVista->asignarDireccionVista("Modulos/Docente/Vista/DocenteMensaje.php");
		//instruye a que se muestre la vista
		$gbVista->mostrar();
	}
	/*Permite cargar del formulario de Docente a un objeto tipo docente. 

	   Valor de retorno:
	     Objeto Docente con todos los campos del formulario 
	*/
	function cargardeFormulario(){
		global $gbVista;
		
		$docente = new Docente();	
		$docente->asignarCedula(					PostGet::obtenerPostGet('cedula')			);
		$docente->asignarCodigo(					PostGet::obtenerPostGet('codigoP')			);
		$docente->asignarCodDocente(				PostGet::obtenerPostGet('codigoD')			);
		$docente->asignarRif(						PostGet::obtenerPostGet('rif')				);
		$docente->asignarNumEmpleado(				PostGet::obtenerPostGet('numEmpleado')		);
		$docente->asignarNombre1(					PostGet::obtenerPostGet('nombre1')			);
		$docente->asignarNombre2(					PostGet::obtenerPostGet('nombre2')			);
		$docente->asignarApellido1(					PostGet::obtenerPostGet('apellido1')			);
		$docente->asignarApellido2(					PostGet::obtenerPostGet('apellido2')			);
		$docente->asignarSexo(						PostGet::obtenerPostGet('sexo')				);
		$docente->asignarFecNacimiento(				PostGet::obtenerPostGet('fecNacimiento')		);
		$docente->asignarTipSangre(					PostGet::obtenerPostGet('tipSangre')			);
		$docente->asignarTelefono1(					PostGet::obtenerPostGet('telefono1')			);
		$docente->asignarTelefono2(					PostGet::obtenerPostGet('telefono2')			);
		$docente->asignarCorreoPersonal(			PostGet::obtenerPostGet('correoPersonal')	);
		$docente->asignarCorreoInstitucional(		PostGet::obtenerPostGet('correoInstitucional'));	
		$docente->asignarDireccion(					PostGet::obtenerPostGet('direccion')			);
		$docente->asignarCodPensum(					PostGet::obtenerPostGet('codPensum')			);
		$docente->asignarCodInstituto(				PostGet::obtenerPostGet('codInstituto')			);
		$docente->asignarLogin(						PostGet::obtenerPostGet('login')				);
		$docente->asignarEstado(					PostGet::obtenerPostGet('estado')				);
		$docente->asignarPrivilegio(				PostGet::obtenerPostGet('privilegio')			);
		$docente->asignarContraseña(				PostGet::obtenerPostGet('contra')				);
		return $docente;
		
		}
		 //asignar y obtener de todos los atributos   
	public function asignarSubControlador($indice, $subControlador){
		$this->subControlador[$indice] = $subControlador;
	}
	//Retorna el subcontrolador ubicada en la posición $indice,  
	//de no existir retorna FALSE
	public function obtenerSubControlador($indice){
		return isset($this->subControlador[$indice])  ?  $this->subControlador[$indice] : FALSE;
	}
	
}
?>
